import isEmpty from 'lodash/isEmpty';
import * as loginApi from '@/common/apis/login-api.js';
import GLOBAL_CONFIG from '@/common/config';

export default {
    namespaced: true,
    state: {
        sourceType: 3,
        tenantId: GLOBAL_CONFIG.tenantId, //租户ID
        tenantCode: GLOBAL_CONFIG.tenantCode, //租户code
        deptId: GLOBAL_CONFIG.deptId, // 门店ID
        openid: '',
        memberToken: '',
		accessToken:'',
        showLogin: false,
        userInfo: {
            // "openid": "wx231652381483811ef24f2c1d1653384200",
            // "phone": "1571820756",
            // "nickName": "张三",
            // "portraitImg": "/xx.jpg",
            // "gender": "1",
            // "address": "陕西省-西安市-莲湖区",
            // "customerId": 1,
        },
        inviterId: '',
		userId:'',//二维码中的员工id
		channelId:'',//二维码中的渠道id
		customerId:'',//分享进入小程序的分享人id
		deptChoseFlag:false,//是否可以选择门店 1可以 其他不可以
		
    },
    mutations: {
        saveinviterId(state, inviterId) {
            state.inviterId = inviterId;
        },
        saveOpenid(state, openid) {
            state.openid = openid;
        },
        setShowLogin(state, showLogin) {
            state.showLogin = showLogin;
        },
        saveUserInfo(state, userInfo) {
            state.userInfo = userInfo;
        },
        saveDeptChoseFlag(state, deptChoseFlag) {
            state.deptChoseFlag = deptChoseFlag;
        },
        saveCustomerId(state, customerId) {
            state.customerId = customerId;
        },
		/**
		 * 	1.手动录入 2.微信扫码 3.微信搜索 4.微信分享
		 * @param {Object} state
		 * @param {Object} sourceType
		 */
        saveSourceType(state, sourceType) {
            state.sourceType = sourceType;
        },
        /**
         * 这里是门店id
         * 情景1: 用户扫码进入二维码会携带门店id
         */
        savedeptId(state, deptId) {
            state.deptId = deptId;
        },
        /**
         * 这里是员工id
         * 情景1: 用户扫码进入二维码会携带员工id
         */
        saveuserId(state, userId) {
            state.userId = userId;
        },
        /**
         * 这里是渠道id
         * 情景1: 用户扫码进入二维码会携带渠道id
         */
        savechannelId(state, channelId) {
            state.channelId = channelId;
        },
        /**
         * 这里是修改租户id
         * 暂时没有可获取租户id的途径,因此暂未使用 2022年2月10日 17:50:26
         */
        saveTenantID(state, tenantId) {
            state.tenantId = tenantId;
        },
		/**保存学习测验模块的token
		 * @param {Object} state
		 * @param {Object} tenantId
		 */
        saveMemberToken(state, memberToken) {
            state.memberToken = memberToken;
        },
		saveAccessToken(state, accessToken) {
		    state.accessToken = accessToken;
		},
    },
    actions: {
        wxLogin({ commit }) {
            return new Promise((resolve, reject) => {
                uni.getProvider({
                    service: 'oauth',
                    success: function ({ provider }) {
                        if (provider.indexOf('weixin') > -1) {
                            uni.login({
                                provider: 'weixin',
                                success: function ({ code }) {
									uni.setStorageSync('code', code);
                                    loginApi.getOpenid({jsCode:code,deptId:1162 }).then(openid => {
                                        if (openid) {
                                            commit('saveOpenid', openid);
                                            uni.setStorageSync('openId', openid);	
											uni.$emit('getOpenIded', true);

                                        } else {
											uni.setStorageSync('phone','')
											this.$store.commit('user/saveOpenid', '');
											this.$store.commit('user/saveUserInfo', {});
											uni.clearStorageSync();
                                            uni.showToast({ title: '请前往小程序使用完整服务', icon: 'none' });
                                        }
                                        resolve(openid);
                                    }).catch(err => {
										uni.setStorageSync('phone','')
										this.$store.commit('user/saveOpenid', '');
										this.$store.commit('user/saveUserInfo', {});
										uni.clearStorageSync();
                                        uni.showToast({title: '请前往小程序使用完整服务', icon: 'none' });
                                        reject(err);
                                    });
                                },
                                fail: function (err) {
									uni.setStorageSync('phone','')
									this.$store.commit('user/saveOpenid', '');
									this.$store.commit('user/saveUserInfo', {});
									uni.clearStorageSync();
                                    uni.showToast({ title: '请前往小程序使用完整服务', icon: 'none' });
                                    reject(err);
                                },
                            })
                        }
                    },
                    fail: function (err) {
                        uni.showToast({ title: '获取服务失败', icon: 'error' });
                        reject(err);
                    },
                })
            });
        },
        /**
         * 全局登录方法
         * @description 使用方法 直接调用即可
         * @example this.$store.dispatch('user/MmvLogin'); // 获取openid
         */
        async MmvLogin({ state, commit, dispatch }) {
            // 如果没有openid则获取openid
            if (isEmpty(state.openid)) {
                await dispatch('wxLogin');
            }
            // 如果没有用户信息则获取用户信息
            if (isEmpty(state.userInfo)) {
				
                uni.showToast({ title: '登录中...', icon: 'loading' });
                commit('setShowLogin', true);
				
				// uni.navigateTo({
				//     url: '/pages/login/login'
				// })
            }

        },
    },
}